package avicit.bdp.dgs.qa.dto;

import avicit.bdp.common.base.BaseDTO;
import avicit.platform6.core.annotation.log.FieldRemark;
import avicit.platform6.core.annotation.log.Id;
import avicit.platform6.core.annotation.log.LogField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.persistence.Column;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
import java.util.Map;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2023-07-04
 * @类说明：RuleTemplateArguementDTO
 * @修改记录：
 * @注意事项：
 * @主要功能：规则模板参数DTO
 */
@ApiModel(value = "RuleTemplateArguementDTO", description = "规则模板参数DTO")
@Table(name = "bdp_dgs_qa_rule_template_arguement")
public class RuleTemplateArguementDTO extends BaseDTO {
    /**
     * 主键
     */
    @Id
    @LogField
    @ApiModelProperty(value = "主键")
    @FieldRemark(column = "id", field = "id", name = "主键")
    @javax.persistence.Id
    @Column(name = "id")
    private String id;

    /**
     * 参数中文名称
     */
    @LogField
    @ApiModelProperty(value = "参数中文名称")
    @FieldRemark(column = "name", field = "name", name = "参数中文名称")
    @Column(name = "name")
    private String name;

    /**
     * 描述
     */
    @LogField
    @ApiModelProperty(value = "描述")
    @FieldRemark(column = "remark", field = "remark", name = "描述")
    @Column(name = "remark")
    private String remark;

    /**
     * 模板ID
     */
    @LogField
    @ApiModelProperty(value = "模板ID")
    @FieldRemark(column = "templateId", field = "templateId", name = "模板ID")
    @Column(name = "template_id")
    private String templateId;

    /**
     * 参数类型，0:输入框、1:选择器、2:数字输入框、3:日期选择器
     */
    @LogField
    @ApiModelProperty(value = "参数类型，0:输入框、1:选择器、2:数字输入框、3:日期选择器")
    @FieldRemark(column = "type", field = "type", name = "参数类型")
    @Column(name = "type")
    private Integer type;
    @Transient
    private String typeName;

    /**
     * 占位符
     */
    @LogField
    @ApiModelProperty(value = "占位符")
    @FieldRemark(column = "placeholder", field = "placeholder", name = "占位符")
    @Column(name = "placeholder")
    private String placeholder;

    /**
     * 默认值
     */
    @LogField
    @ApiModelProperty(value = "默认值")
    @FieldRemark(column = "defaultValue", field = "defaultValue", name = "默认值")
    @Column(name = "default_value")
    private String defaultValue;
    @Transient
    private List<String> defaultValueList;

    /**
     * 参数Key
     */
    @LogField
    @ApiModelProperty(value = "参数Key")
    @FieldRemark(column = "argKey", field = "argKey", name = "参数Key")
    @Column(name = "arg_key")
    private String argKey;

    /**
     * 参数值
     */
    @LogField
    @ApiModelProperty(value = "参数值")
    @FieldRemark(column = "argVaule", field = "argVaule", name = "参数值")
    @Column(name = "arg_value")
    private String argVaule;

    /**
     * 参数关联属性，Json串，实际类型为Map<String,Object>，每个属性不一致
     */
    @LogField
    @ApiModelProperty(value = "参数关联属性，Json串，实际类型为Map<String,Object>，每个属性不一致")
    @FieldRemark(column = "props", field = "props", name = "参数关联属性")
    @Column(name = "props")
    private String props;
    @Transient
    private Map<String, Object> propsMap;

    /**
     * 排序
     */
    @LogField
    @ApiModelProperty(value = "排序")
    @FieldRemark(column = "orderBy", field = "orderBy", name = "排序")
    @Column(name = "order_by")
    private Integer orderBy;

    /**
     * 是否必填，0：不是；1：是
     */
    @LogField
    @ApiModelProperty(value = "是否必填，0：不是；1：是")
    @FieldRemark(column = "required", field = "required", name = "是否必填，0：不是；1：是")
    @Column(name = "required")
    private Integer required;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getTemplateId() {
        return templateId;
    }

    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

    public String getPlaceholder() {
        return placeholder;
    }

    public void setPlaceholder(String placeholder) {
        this.placeholder = placeholder;
    }

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    public List<String> getDefaultValueList() {
        return defaultValueList;
    }

    public void setDefaultValueList(List<String> defaultValueList) {
        this.defaultValueList = defaultValueList;
    }

    public String getArgKey() {
        return argKey;
    }

    public void setArgKey(String argKey) {
        this.argKey = argKey;
    }

    public String getArgVaule() {
        return argVaule;
    }

    public void setArgVaule(String argVaule) {
        this.argVaule = argVaule;
    }

    public String getProps() {
        return props;
    }

    public void setProps(String props) {
        this.props = props;
    }

    public Map<String, Object> getPropsMap() {
        return propsMap;
    }

    public void setPropsMap(Map<String, Object> propsMap) {
        this.propsMap = propsMap;
    }

    public Integer getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(Integer orderBy) {
        this.orderBy = orderBy;
    }

    public Integer getRequired() {
        return required;
    }

    public void setRequired(Integer required) {
        this.required = required;
    }
}
